/* 
 * File:   InterpolacionNewton.h
 * Author: gina Cerón
 *
 * Created on 2 de septiembre de 2011, 08:44 AM
 */

#ifndef INTERPOLACIONNEWTON_H
#define	INTERPOLACIONNEWTON_H

#include <stdio.h>
#include <../librerias/Polinomio.h>

using namespace std;

class InterpolacionNewton
{
        private:
            
            int tam_aleatorio, tam_entrada, n_anyos, tam_ajusteAleat; //tam entradas por archivo y aleatorias
            int tam_ajuste; // Tamaño de datos a usar para ajustar el polinomio
            bool * arrayEscogidos;
            int ** mat_DatosXY; //Datos de entrada
            int ** mat_DatosInterpol; // Datos de entrada elegidos para interpolar
            double ** mat_DiferenciasDiv1; // Matriz donde se van guardando las diferencias divididas calculadas para el 1er año
            double ** mat_DiferenciasDiv2; // Matriz donde se van guardando las diferencias divididas calculadas para el 2do año
            double ** mat_DifDivAleat;
            int ** mat_DatosInterAleat; //Datos de entrada
            
            double * array_bk; //Coeficientes b hallados para construir el polinomio
            double * arrayResultados;
            double * arrayResultados2;
            int ** mat_DatsPrueb;//Datos genereados aleatoriamente
            Polinomio * array_Polinomios;
            Polinomio * array_PolysError;
            Polinomio poly2, polyError2;
            
        public:
            
            InterpolacionNewton(int numAletaorios, int tamEntrada, int nanyos, int ajuste, int ajustAleat);
            ~InterpolacionNewton();
            void leerArchivo();
            bool enArreglo(int * array, int n, int tamano);
            void escogerDatosInter();
            void calculoDiferenciasDivididas();
            void construccionPolinomio();
            void evaluarEnPoli();
            void escribirResultado();
            void inicializarDatosPrueba();
            void imprimirPolinomios();
            void ordenarDatosAInterpolar();
            void construirError();
            void escogerDatosInter2();
            void calculoDiferenciasDivididasSegundo();
            void construccionPolinomio2();
            void evaluarEnPoliSegundo();
            void escribirPuntoSegundo();
            void ordenarDatosInterPAleato();

    

};

#endif	/* INTERPOLACIONNEWTON_H */

